#pragma once

#include <iostream>
#include <unistd.h>
#include <fcntl.h>

enum
{
    SOCK_ERROR = 1,
    BIND_ERROR,
    LISTEN_ERROR,
    ACCEPT_ERROR,
    EPOLL_CREAT_ERROR,
    FCNTL_GETTL_ERROR
};


void SetNonBlock(int fd)
{
    // 获取文件拥有的mode和文件状态标志
    int mode = ::fcntl(fd, F_GETFL);
    if(mode < 0)
    {
        exit(FCNTL_GETTL_ERROR);
    }
    ::fcntl(fd, F_SETFL, mode | O_NONBLOCK);
}